//: Playground - noun: a place where people can play

import UIKit

/** 
    类和结构体的共同点:通过定义属性存储值; 通过定义方法提供功能; 通过定义构造器生成初始化值
    类与结构体的区别:
    类:允许一个类继承另一个;允许引用计数器对一个类的多次引用
    结构体:结构体通过复制的方式在代码中传递; 不使用引用计数器
*/

class ClassName {                       // 类名首字母用大写
    // 属性和方法                        // 属性名和方法名的首字母用小写
}

struct StructureName {                 // 结构体的首字母也大写
    // 属性和方法
}

struct Resolution {                    // 定义名为Resolution的结构体
    var width = 0                      // 包含宽高两个Int类型的存储属性
    var height = 0
}

class VideoMode {                      // 定义名为VideoMode的类
    var resolution = Resolution()      // 初始化一个新的Resolution结构体实例
    var interlaced = false             // 定义默认值为false的布尔类型
    var frameRate = 0.0                // 默认值为0.0的Double类型
    var name: String?                  // 默认值为nil的String可选类型
}

/**
    结构体: 只是用来封装少量简单的数据值;实例被赋值或传递存储的时候需要进行值拷贝,不需要用到继承
    类: 需要包含复杂的属性方法,能形成一个抽象的事物描述;需要用到继承;需要用到引用拷贝
    字符串,数组,字典的底层都是通过结构体实现的,所以它们在被赋值的时候都是通过值拷贝,
    当然了swift在内部会做性能优化,不会是只要赋值就拷贝,只有在必要的时候才会进行值拷贝.
 */